## Propósito del Script: se muestran los resultados de un análisis de profesionales
## en las encuestas realizadas a los FRE.
##
## Copyright (c) Fondo Nacional de Estupefacientes, 2021
##
## Email: dsparra@minsalud.gov.co
require(plotly)
## Loading required package: plotly
## Loading required package: ggplot2
##
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
##
## last_plot
## The following object is masked from 'package:stats':
##
## filter
## The following object is masked from 'package:graphics':
##
## layout
require(tidyverse); theme_set(theme_bw())
## Loading required package: tidyverse
## -- Attaching packages --------------------------------------- tidyverse 1.3.1 --
## v tibble 3.1.3 v dplyr 1.0.7
## v tidyr 1.1.3 v stringr 1.4.0
## v readr 2.0.0 v forcats 0.5.1
## v purrr 0.3.4
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks plotly::filter(), stats::filter()
## x dplyr::lag() masks stats::lag()
require(lubridate)
## Loading required package: lubridate
##
## Attaching package: 'lubridate'
## The following objects are masked from 'package:base':
##
## date, intersect, setdiff, union
require(patchwork)
## Loading required package: patchwork
source(file.path('src', 'data', '901_funcionesMapa.R'), encoding = 'UTF-8')
## Loading required package: sf
## Linking to GEOS 3.9.0, GDAL 3.2.1, PROJ 7.2.1
source(file.path('src', 'visualization', '901_funcionesBarras.R'), encoding = 'UTF-8')
source(file.path('src', 'models', '900_funcionesAlmacenamientoGrafico.R'), encoding = 'UTF-8')
# 1. Lectura de datos base ------------------
#
df <- read_csv(file.path('data', 'processed', '001_Herramienta_Procesada.csv'))
## Rows: 16 Columns: 184
## -- Column specification --------------------------------------------------------
## Delimiter: ","
## chr (166): Nombre del encuestador, Nombre del funcionario que recibe la enc...
## dbl (8): 3.01 Existencias actuales de recetarios en el FRE, 3.03 Tiempo d...
## lgl (7): Si la respuesta a la pregunta anterior fue "otro", indique cual:...
## dttm (3): Marca temporal, Fecha de la visita, Fecha creación FRE
##
## i Use `spec()` to retrieve the full column specification for this data.
## i Specify the column types or set `show_col_types = FALSE` to quiet this message.
df <- df %>%
mutate(Profesion = ifelse(`Profesión del funcionario a cargo del FRE` != 'Otro',
`Profesión del funcionario a cargo del FRE`,
`Si la respuesta a la pregunta anterior fue "otro", indique cual:...17`))
df$`Profesión del personal de apoyo (1)` <-
map2_chr(df$`Profesión del personal de apoyo (1)`,
df$`Si la respuesta a la pregunta anterior fue "otro", indique cual:...22`,
function(x, y) {ifelse(x != 'Otro', x, y)})
df$`Profesión del personal de apoyo (2)` <-
map2_chr(df$`Profesión del personal de apoyo (2)`,
df$`Si la respuesta a la pregunta anterior fue "otro", indique cual:...27`,
function(x, y) {ifelse(x != 'Otro', x, y)})
df$`Profesión del personal de apoyo (3)` <-
map2_chr(df$`Profesión del personal de apoyo (3)`,
df$`Si la respuesta a la pregunta anterior fue "otro", indique cual:...32`,
function(x, y) {ifelse(x != 'Otro', x, y)})
df$`Profesión del personal de apoyo (4)` <-
map2_chr(df$`Profesión del personal de apoyo (4)`,
df$`Si la respuesta a la pregunta anterior fue "otro", indique cual:...37`,
function(x, y) {ifelse(x != 'Otro', x, y)})
df$`Profesión del personal de apoyo (5)` <-
map2_chr(df$`Profesión del personal de apoyo (5)`,
df$`Si la respuesta a la pregunta anterior fue "otro", indique cual:...42`,
function(x, y) {ifelse(x != 'Otro', x, y)})
df <- df %>% rowwise() %>%
mutate(Profesiones = list(c_across(matches('Profesión\\sdel\\s(personal|funcionario)'))))
# 2. Perfiles profesionales en el FRE ------------------
perfilProfesional1 <- df$Profesion %>%
table() %>% as_tibble() %>%
rename(Profesion = '.') %>%
barrasGraficoRev(Profesion, n,
'Perfil profesional encargado del FRE',
'Frecuencia') +
theme(panel.grid = element_blank())
perfilProfesional1

guardarGGplot(perfilProfesional1, '020_perfilProfesionalEncargado', 6, 4)
# No todo los FRE tienen un encargado con profesión de Químico Farmacéutico
df_Total <- df %>%
right_join(colombiaGeoDF, by = c('CodigoDepartamento' = 'DPTO'))
mapaProfesional1 <- df_Total %>%
ggplot() +
geom_sf(aes(geometry = geometry, fill = Profesion)) +
# coord_sf(crs = st_crs(32618)) +
labs(title = 'Profesión del encargado en el FRE') +
theme(axis.text = element_blank(), panel.grid = element_blank())
mapaProfesional1

guardarGGplot(mapaProfesional1, '021_mapaProfesional', 8, 6)
# Con apoyos
perfilProfesional2 <- df$Profesiones %>% unlist() %>%
table() %>% as_tibble() %>%
rename(Profesiones = '.') %>%
barrasGraficoRev(Profesiones, n, 'Perfiles profesionales en FRE (encargados y apoyos)',
xlab = 'Frecuencia') +
theme(panel.grid = element_blank())
perfilProfesional2

guardarGGplot(perfilProfesional2, '022_perfilProfesional2', 8, 6)
# 3. ¿Cuantas personas trabajan en el FRE?------------------
df_Total$NoPersonas <- df_Total$Profesiones %>%
map_dbl(function(x){sum(!is.na(x))})
perfilProfesional3 <- df_Total %>%
select(NoPersonas) %>% table() %>% as_tibble() %>%
ggplot(aes(x = ., y = n)) +
geom_text(aes(label = n, y = n + 1)) +
geom_bar(stat = 'identity', fill = '#6699ff', color = 'black', alpha = 0.6) +
ylab('Frecuencia') + xlab('No personas en el FRE') +
theme_bw() +
labs(title = 'Conteo de personas que trabajan por FRE')+
theme(panel.grid = element_blank())
perfilProfesional3

guardarGGplot(perfilProfesional3, '023_perfilProfesional3', 6, 4)
# N. personas en el FRE
mapaProfesional2 <- df_Total %>%
ggplot() +
geom_sf(aes(geometry = geometry, fill = NoPersonas)) +
coord_sf(datum = NA) +
# coord_sf(crs = st_crs(32618)) +
scale_fill_continuous(type = 'viridis') +
labs(title = 'N.° personas en el FRE') +
theme(axis.text = element_blank()) +
theme(panel.grid = element_blank())
mapaProfesional2

guardarGGplot(mapaProfesional2, '024_mapaProfesional2', 8, 6)
# 4. ¿modalidad de contratación de personal?------------------
df_Total <- df_Total %>% rowwise() %>%
mutate(ModalidadContratacion = list(c_across(matches('Tipo de vinculación'))))
# Todo el personal de todos los departamentos
dfContratacion <- df_Total$ModalidadContratacion %>% unlist() %>%
str_replace(., 'De [P|p]lanta|No aplica', NA_character_) %>%
table() %>% as_tibble()
pieProfesional1 <- dfContratacion %>%
mutate(prop = n / sum(n),
ncumsum = cumsum(prop) - 0.5 * prop) %>%
ggplot(aes(x = "", y = prop, fill = .)) +
geom_bar(stat="identity", width=1) +
coord_polar("y", start=0) +
theme_void() +
theme(legend.position="bottom") +
geom_text(aes(y = ncumsum, label = .), color = "white", size=4) +
scale_fill_discrete()
pieProfesional1

guardarGGplot(pieProfesional1, '025_pieProfesional1', 5, 5)
pieProfesional2 <- dfContratacion %>%
plot_ly(labels = ~., values = ~n, type = 'pie',
textinfo = 'label+percent',
marker = list(line = list(color = '#FFFFFF', width=1)),
showlegend = FALSE)
pieProfesional2
guardarPlotly(pieProfesional2, '026_pieProfesional2', libdir = 'plotly')